//package cn.yitun.chat.yitunserverrunsingleboot;
//
//import cn.yitun.chat.yituncommonutil.YitunStringUtil;
//import cn.yitun.chat.yitunservercommonlib.box.ConfigBox;
//import cn.yitun.chat.yitunservercommonlib.socket.Server;
//import cn.yitun.chat.yitunserverimcore.chat.socket.netty.tcp.SocketServer;
//import cn.yitun.chat.yitunserverimcore.chat.socket.netty.web.WebSocketServer;
//import cn.yitun.chat.yitunserverrunsingleboot.chat.properties.PathProperties;
//import cn.yitun.chat.yitunserverrunsingleboot.chat.properties.ServerProperties;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.CommandLineRunner;
//import org.springframework.stereotype.Component;
//
//@Component
//public class StartupRunner implements CommandLineRunner {
//
//    @Autowired
//    private ServerProperties serverProperties;
//
//    @Autowired
//    private PathProperties pathProperties;
//
//    @Override
//    public void run(String... arg0) throws Exception {
//        String address = pathProperties.getServerAddress();
//
//        String category = "";
//        String urlPath = "";
//        String value = "";
//
//        /**
//         * -----------------------------------------------------------------------------------------------------
//         **/
//        /**
//         * 这里是读取系统配置文件，用于加载系统启动时需要的端口等配置。
//         */
//
//        /** 服务器启动的端口 **/
//        String serverPort = String.valueOf(serverProperties.getServerPort());
//
//        /** 聊天服务启动TCP端口 **/
//        String tcpPortValue = String.valueOf(serverProperties.getTcpPort());
//
//        /** 聊天服务WebSocket端口 **/
//        String websocketPortValue = String.valueOf(serverProperties.getWebsocketPort());
//
//        /** 聊天服务WebSocket路径 **/
//        String websocketPath = String.valueOf(serverProperties.getWebsocketPath());
//
//        /**
//         * 文件服务相关配置,这些配置是用来启动项目的时候需要的配置
//         */
//        /*************** config start ***********************/
//        category = "server.config.file";
//        urlPath = "server.config.file.upload.path";
//        value = String.valueOf(serverProperties.getFileUploadPath());
//        ConfigBox.put(category, urlPath, value);
//
//        urlPath = "server.config.file.request.path";
//        value = String.valueOf(serverProperties.getFileRequestPath());
//
//        String fileHttp = ("443".equals(serverPort)) ? "https://" : "http://";
//        String filePort = ("80".equals(serverPort) || "443".equals(serverPort)) ? "" : (":" + serverPort);
//        value = (null == value || value.isEmpty()) ? (fileHttp + address + filePort) : value;
//
//        ConfigBox.put(category, urlPath, value);
//        /*************** config end ***********************/
//
//        /**
//         * -----------------------------------------------------------------------------------------------------
//         **/
//
//        /**
//         * 这里的配置是用来通知客户端，相关服务的地址在哪。需要参考config.properties配置文件相应配置
//         */
//        /*************** path start ***********************/
//        String http = ("443".equals(serverPort)) ? "https://" : "http://";
//        String p = ("80".equals(serverPort) || "443".equals(serverPort)) ? "" : (":" + serverPort);
//
//        // #聊天服务的tcp地址(就是可以访问本访问的地址)
//        // chat.server.tcp.address=192.168.200.1
//        // chat.server.tcp.port=12010
//
//        category = "server.path.chat";
//        // 聊天服务地址
//        urlPath = "chat.server.tcp.address";
//        // value =
//        // OnlyPropertiesUtil.getProperty("config/setting/path.properties",
//        // urlPath);
//        value = address;
//        ConfigBox.put(category, urlPath, value);
//
//        // 聊天服务端口
//        urlPath = "chat.server.tcp.port";
//        value = String.valueOf(pathProperties.getTcpPort());
//        if (YitunStringUtil.isBlank(value)) {
//            value = tcpPortValue;
//        }
//        ConfigBox.put(category, urlPath, value);
//
//        // #聊天服务的webSocket路径
//        // chat.server.websocket.path=ws://192.168.200.1:12020/oim/websocket
//        // websocket地址
//        urlPath = "chat.server.websocket.path";
//        value = String.valueOf(pathProperties.getWebsocketPath());
//        if (YitunStringUtil.isBlank(value)) {
//            String protocol = "443".equals(websocketPortValue) ? "wss://" : "ws://";
//            String wp = ("80".equals(websocketPortValue) || "443".equals(websocketPortValue)) ? "" : (":" + websocketPortValue);
//            value = protocol + address + wp + websocketPath;
//        }
//        ConfigBox.put(category, urlPath, value);
//
//        // #聊天服务的http地址
//        // chat.server.http.url=http://192.168.200.1:12000
//        // 聊天服务http地址
//        urlPath = "chat.server.http.url";
//        value = String.valueOf(pathProperties.getHttpUrl());
//        if (YitunStringUtil.isBlank(value)) {
//            value = http + address + p;
//        }
//        ConfigBox.put(category, urlPath, value);
//
//        /**
//         * 文件服务地址
//         */
//        // #文件服务地址
//        // file.server.http.url=http://192.168.200.1:12000
//        category = "server.path.file";
//        urlPath = "file.server.http.url";
//        value = String.valueOf(pathProperties.getHttpUrl());
//        if (YitunStringUtil.isBlank(value)) {
//            value = http + address + p;
//        }
//        ConfigBox.put(category, urlPath, value);
//
//        /**
//         * 远程服务
//         */
//        // category = "server.path.remote";
//        // 远程服务地址
//        // urlPath = "remote.server.tcp.address";
//        // value =
//        // OnlyPropertiesUtil.getProperty("config/setting/path.properties",
//        // urlPath);
//        // ConfigBox.put(category, urlPath, value);
//        // 远程服务端口
//        // urlPath = "remote.server.tcp.port";
//        // value =
//        // OnlyPropertiesUtil.getProperty("config/setting/path.properties",
//        // urlPath);
//        // ConfigBox.put(category, urlPath, value);
//
//        /*************** path end ***********************/
//
//        /**
//         * -----------------------------------------------------------------------------------------------------
//         **/
//
//        //
//        // #聊天服务的udp地址(就是可以访问本访问的地址)暂时用不上
//        // chat.server.udp.address=192.168.200.1
//        // chat.server.udp.port=8310
//
//        // #远程协助服务地址
//        // remote.server.tcp.address=192.168.200.1
//        // remote.server.tcp.port=13010
//
//        int tcpPort = Integer.parseInt(tcpPortValue);
//        int websocketPort = Integer.parseInt(websocketPortValue);
//        // int remoteTcpPort = Integer.parseInt(remoteTcpPortValue);
//
//        SocketServer socketServer = new SocketServer();
//        WebSocketServer webSocketServer = new WebSocketServer(websocketPath);
//        // RemoteSocketServer remoteSocketServer = new RemoteSocketServer();
//
//        socketServer.setPort(tcpPort);
//        webSocketServer.setPort(websocketPort);
//        // remoteSocketServer.setPort(remoteTcpPort);
//
//        new StartupRunner.StartThread(socketServer).start();
//        new StartupRunner.StartThread(webSocketServer).start();
//
//    }
//
//    static class StartThread extends Thread {
//
//        private Server server;
//
//        public StartThread(Server server) {
//            this.server = server;
//        }
//
//        public void run() {
//            server.start();
//        }
//    }
//
//}
